package ch02.t11;

/**
 * @author shun
 * @date 2022-10-21 21:26:41
 * @note 我之为也
 */

import java.util.ArrayList;
import java.util.List;

public class T11OptOK {
    // 15  11:10 写代码
    public static void main(String[] args) {
        T11OptOK t = new T11OptOK();
        List<String> list = t.encode(1, 49);
        for(String str: list){
            System.out.println(str);
        }
    }



    private List<String> getMiddleList(int begin, int end){

        //2、先定义一个结合把这些数据放进去  遍历  1 2 3 4 5 ... 49
        List<String> list = new ArrayList<>();
        for(int index = begin;index<=end;index++){
            list.add(""+index);
            if(index != end){
                list.add("+");
            }
        }
        return list;
    }

    /**
     * 方法描述: 用于加密
     * @author: 黄后林
     * @date: 2022/10/18 11:23
     * @param begin 开始
     * @param end   结束
     * @return java.util.List<java.lang.String>  结果集
     */
    public List<String> encode(int begin, int end){
        List<String>  rs = new ArrayList<>();

        // 1、入参检测
        if(begin<=0 || end<=0 || end <begin){
            return rs;
        }

        // 2、初始化数据
        List<String> middleList = getMiddleList(begin, end);

        for(int outer =0 ;outer<=middleList.size() -1; outer++){
            // 4.1、先找第1个+ 并且把它变成*  然后再找和第1个+匹配的第二个*  14  1+2+3+4+4
            String firstData = middleList.get(outer);
            if("+".equals(firstData)){
                // 说明找到了第1个+   70%
                String first = middleList.get(outer -1);

                // -----继续循环
                for(int inner = outer+1; inner<=middleList.size() -1;inner++){
                    String secondData = middleList.get(inner);
                    if("+".equals(secondData)){
                        if((inner -  outer) == 2){
                            // 说明2个加号是相邻的
                            continue;
                        }
                        // 说明找到了第2个+   70%
                        String second = middleList.get(inner -1);
                        rs.add(first + second);
                    }
                }
            }
        }
        return rs;
    }
}
